package com.mage.completeproject.component;

import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.WebRequest;

import java.util.Map;

//给容器中加入我们自己定义的ErrorAttributes
//这个类主要是为了配置客户端访问返回的json能获取到company和ext对象，没有这个类客户端中获取不到，但是没有这个类页面仍能获取到MyExceptionHandler类中定义的ext对象
@Component
public class MyErrorAttributes extends DefaultErrorAttributes {
    //返回值的map就是页面和json能获取的所有字段

    @Override
    public Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {
        Map<String, Object> map = super.getErrorAttributes(webRequest, includeStackTrace);
        map.put("company","atguigu");

        //我们的异常处理器携带的数据
        Map<String, Object> ext = (Map<String, Object>) webRequest.getAttribute("ext",0);//这个0可以通过按住ctrl+鼠标点击getAttribute进入，找到SCOPE_REQUEST为0，意思是：这里的0表示request请求，1则表示response请求
        map.put("ext",ext);
        return map;
    }

    //springboot2.0以上版本，父类DefaultErrorAttributes的includeException默认是false，exception默认获取不到异常对象（为空）
    public MyErrorAttributes(){
        super(true);
    }
}
